<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>导航守卫执行顺序</title>
</head>
<body>
    <div id="app">
        <router-link to="/Home">主页</router-link>
        <router-link to="/product/123">产品详情1</router-link>
        <router-link to="/product/456">产品详情2</router-link>
        <router-view></router-view>
    </div>
    <script src="./node_modules/vue/dist/vue.js"></script>
    <script src="./node_modules/vue-router/dist/vue-router.js"></script>
    <script>
        //配置路由
        let routes = [
          {
              path:"/home",
              beforeEnter: (to, from, next) => {
                  console.log("/home 路由的导航守卫");
                  next();
              },
              component:()=>{
                  Promise.resolve({
                      template:`<h1>主页</h1>`,
                    //   路由进来之前
                    beforeRouteEnter (to, from, next) {
                        console.log("组件导航守卫 进入到主页的路由");
                        console.log(this);
                        netx();
                    },
                    //路由更新的时候
                    beforeRouteUpdate(to,from,next){
                         console.log(this);
                        console.log("组件导航守卫  主页 路由更新的时候");
                        netx();
                    },
                    //路由离开的时候
                    beforeRouteLeave (to, from, next) {
                        console.log("组件导航守卫  离开 /home 路由");
                        console.log("现在的路由",from);
                        console.log("前往的路由", to);
                        console.log(this);
                        next();
                    }
                  })
              }
          },
          {
              path:"/product/:productId",
              beforeEnter: (to, from, next) => {
                  console.log("/product 路由导航守卫");
                  next();
              },
              component:()=>import("./Product.js")
          }
        ];
        let router = new VueRouter({
            routes
        });
        router.beforeEach((to,from,next)=>{
            console.log("执行全局的前置的导航守卫");
            next();
            
        })
        let vm = new Vue({
            router,
            el:"#app",
        })
    </script>
</body>
</html>